<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>掌城科技交通云服务接口测试</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
* {
	margin: 1px;
	padding: 1px;
}

a {
	blr: expression(this.onFocus = this.blur ());
	outline: none
}

div.cl_border {
	border: 1px solid #0000FF;
	opacity: 0.75;
	background: #FFCCCC;

}
</style>
<script type="text/javascript" src="api/jquery-1.6.js"></script>
<script type="text/javascript" src="api/jQuery.md5.js"></script>
<script type="text/javascript" src="api/jQuery.sha1.js"></script>
<script type="text/javascript" src="api/jQuery.base64.js"></script>
<script type="text/javascript">
/**
js 对文字进行编码涉及3个函数：escape,encodeURI,encodeURIComponent，相应3个解码函数：unescape,decodeURI,decodeURIComponent
1、   传递参数时需要使用encodeURIComponent，这样组合的url才不会被#等特殊字符截断。                            
例如：encodeURIComponent("http://cang.baidu.com/bruce42")+'">退出</a& gt;');
2、   进行url跳转时可以整体使用encodeURI
例如：Location.href=encodeURI('http://cang.baidu.com/do/s?word=百度&ct=21');
3、   js使用数据时可以使用escape
例如：搜藏中history纪录。
4、   escape对0-255以外的unicode值进行编码时输出%u****格式，其它情况下escape，encodeURI，encodeURIComponent编码结果相同。
最多使用的应为encodeURIComponent，它是将中文、韩文等特殊字符转换成utf-8格式的url编码，所以如果给后台传递参数需要使用encodeURIComponent时需要后台解码对utf-8支持（form中的编码方式和当前页面编码方式相同）
escape不编码字符有69个：*，+，-，.，/，@，_，0-9，a-z，A-Z
encodeURI不编码字符有82个：!，#，$，&，'，(，)，*，+，,，-，.，/，:，;，=，?，@，_，~，0-9，a-z，A-Z
encodeURIComponent不编码字符有71个：!， '，(，)，*，-，.，_，~，0-9，a-z，A-Z
*/
//对Date的扩展，将 Date 转化为指定格式的String   
//月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符，   
//年(y)可以用 1-4 个占位符，毫秒(S)只能用 1 个占位符(是 1-3 位的数字)   
//例子：   
//(new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423   
//(new Date()).Format("yyyy-M-d h:m:s.S")      ==> 2006-7-2 8:9:4.18   
Date.prototype.format = function(fmt)   
{ //author: meizz   
	var o = {   
	 "M+" : this.getMonth()+1,                 //月份   
	 "d+" : this.getDate(),                    //日   
	 "h+" : this.getHours(),                   //小时   
	 "m+" : this.getMinutes(),                 //分   
	 "s+" : this.getSeconds(),                 //秒   
	 "q+" : Math.floor((this.getMonth()+3)/3), //季度   
	 "S"  : this.getMilliseconds()             //毫秒   
	};   
	if(/(y+)/.test(fmt))   
	 fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));   
	for(var k in o)   
	 if(new RegExp("("+ k +")").test(fmt))   
	fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));   
	return fmt;   
}  
	var g_appKey = "59f5c35b571a417b98a64f06ff3d5e2b";
	
	/**URL编码解码
	type >0编码
		<0 解码
	*/
	function fn_URLCode(str,type) {
		if(type>0)
			return encodeURIComponent(str);
		else
			return decodeURIComponent(str);
	}
	/**base64编码解码
	type >0编码
		<0 解码*/
	function fn_base64Code(str,type){
		if(type>0)
			return $.base64({data:str,type:0}); // ZW5jb2RlIHRoaXMgc3RyaW5n
		else
			return $.base64({data:str,type:1,unicode:true}); // encode this string
	}	
	/**UTC转日期串*/
	function fn_UTCtoTimeStr(utcVal) {
		utcVal += "";
		var dateFormatString= "yyyy-MM-dd hh:mm:ss";
		var offset = 8 * 60 * 60 * 1000;//北京东8区
		var totalMiliseconds  = parseInt(utcVal)*1000+0;
		var timeString = new Date(totalMiliseconds).format(dateFormatString); 
		return  timeString;
	}
	/**日期串转UTC*/
	function fn_timeStrToUTC(dateStr) {
		var dateFormatString= "yyyy-MM-dd hh:mm:ss";
		var offset = 8 * 60 * 60 * 1000;
		var totalMiliseconds  = new Date(Date.parse(dateStr)).getTime();
		return  (totalMiliseconds)/1000;
	}
	/**md5加密字符串*/
	function fn_md5(str){
		return $.md5(str); 
	}
	/**sha1加密字符串*/
	function fn_sha1(str){
		return $.sha1(str);
	}
	/**16进制转整数*/
	function fn_hexToInt(str){
	　　　　return parseInt(str,16);
	}
	/**整数转16进制*/
	function fn_intToHex(str){
		var intVal=parseInt(str,10);
		return intVal.toString(16);
	}
	/**
	 * 统一开始执行编码解码
	 */
	function fn_startExcute() {
		var response;
		var reqType=$("input[name='codeType']:checked").val();
		var reqData=$('#codeValue').val();
		if(reqType=="URLEncode"){
			response=fn_URLCode(reqData,1);
		}else if(reqType=="URLDecode"){
			response=fn_URLCode(reqData,-1);
		}else if(reqType=="Base64Encode"){
			response=fn_base64Code(reqData,1);
		}else if(reqType=="Base64Decode"){
			response=fn_base64Code(reqData,-1);
		}
		else if(reqType=="UTC2Date"){
			response=fn_UTCtoTimeStr(reqData);
		}else if(reqType=="Date2UTC"){
			response=fn_timeStrToUTC(reqData);
		}else if(reqType=="MD5Encode"){
			response=fn_md5(reqData);
		}else if(reqType=="SHA1Encode"){
			response=fn_sha1(reqData);
		}
		else if(reqType=="Hex2Int"){
			response=fn_hexToInt(reqData);
		}else if(reqType=="Int2Hex"){
			response=fn_intToHex(reqData);
		}
		else{
			response="不支持的编码类型";
		}
		$('#output').text("");
		$('#output').text(response);
	}
	/**清除输入框中的内容*/
	function fn_clearValue(){
		$('#codeValue').val("");
		$('#output').text("");
	}
	/**获取当前时间*/
	function fn_dateNow(){
		var utc = new Date().getTime()/1000;
		var str = fn_UTCtoTimeStr(utc);
		$('#codeValue').val(str);
	}
	// this functions waits jQuery XML 
	function xmlToString(xmlData) {
		var xmlString = undefined;
		if (window.ActiveXObject) {
			xmlString = xmlData[0].xml;
		}
		if (xmlString === undefined) {
			var oSerializer = new XMLSerializer();
			xmlString = oSerializer.serializeToString(xmlData[0]);
		}
		return xmlString;
	}
</script>
</head>
<body class="xxx">
	<div>
		<h4 style="align-text: center; height: 20px;" id="bgclock">掌城科技常用工具转换(按需添加):</h4>
		<div style="padding-left: 10px;" id="west">
			<ul>
				<li><input name="codeType" type="radio" value="URLEncode"
					checked="checked" />URL编码</li>
				<li><input name="codeType" type="radio" value="URLDecode" />URL解码</li>
				<li><input name="codeType" type="radio" value="Base64Encode" />Base64编码</li>
				<li><input name="codeType" type="radio" value="Base64Decode" />Base64解码</li>
				<li><input name="codeType" type="radio" value="UTC2Date" />UTC-转日期</li>
				<li><input name="codeType" type="radio" value="Date2UTC" />日期-转UTC  &nbsp;<a href="#" onclick="fn_dateNow();">现在时间</a></li>
				<li><input name="codeType" type="radio" value="MD5Encode" />MD5加密</li>
				<li><input name="codeType" type="radio" value="SHA1Encode" />SHA1加密</li>
				<li><input name="codeType" type="radio" value="Hex2Int" />16进制转整数</li>
				<li><input name="codeType" type="radio" value="Int2Hex" />整数转16进制</li>
				<li><a href="freeware/develope/jsonView.rar" target="_blank"/>json工具</a>&nbsp;<a href="freeware/develope/xmlEditor.exe" target="_blank"/>xml工具</a></li>
			</ul>
		</div>
		<br /> 输入:
		<textarea id="codeValue" rows="5" cols="200"></textarea>
	</div>
	<div>
		<hr />
		<a href="#" onclick="fn_startExcute();">猛戳一下</a> &nbsp;<a href="#"
			onclick="fn_clearValue();">清除之</a>
		<div id="tabs" fit="true" border="false">
			<br />输出结果:
			<div title="输出结果" class="cl_border"
				style="height: 200px; overflow: auto;" id="output"></div>
			<span>掌城科技技术支持，联系人mail:zhouhuabin@chinatransinfo.com(推荐用 <a href="freeware/develope/chrome_x86_37.exe">chrome浏览器</a> )</span>
		</div>
	</div>
</body>
</html>
